#pragma once
/** enum 这种方式声明枚举，限制条件：[8/26/2020 ZC] */
/**
 * 枚举会隐式转化为int
 * 用户无法自定义类型
 * 声明的枚举成员是无限范围，即没有作用域一说
 */

 /** enum class 【c++11】特性，避免了enum的问题 [8/26/2020 ZC] */
 /**
  * 枚举不会隐式转化为int
  * 用户可以自定义类型
  * 且声明的枚举成员是有范围的，即有作用域的
  */
#define REGISTER_NAME(num,name) NAME_##name = num,
enum EName
{
#include "Macro.inl"
    NAME_MaxHardcodedNameIndex
};
/**
 * #undef只是撤消掉掉原来定义的宏，
 * 但是不会取消掉你已经用这个宏定义的变量
 * 避免已经#define的宏在其他其他地方由于引入了这个包含宏的.h文件而引起一些编译问题
 */
#undef REGISTER_NAME
